
package com.xbongbong.pro.statistic.model;

import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.pro.domain.entity.ChartCategoryEntity;

import java.util.Collection;
import java.util.List;
import java.util.Map;


/**
 * @author autoGen
 * @date  2019-01-07 11:13:40
 */
public interface ChartCategoryModel extends IModel<ChartCategoryEntity> {

    /**
     * 保存 id不存在则为插入，否则为更新
     *
     * @param entity 报表分类实体
     * @return java.lang.Integer
     * @author zcp
     * @date 2019/1/15 14:46
     * @version v1.0
     * @since v1.0
     */
    Integer save(ChartCategoryEntity entity);

    /**
     * 批量插入数据
     *
     * @param entityList 实体列表
     * @author GuoJun.HU
     * @date 2019/2/18 22:07
     * @since V1.0
     */
    void insertBatch(List<ChartCategoryEntity> entityList);

    /**
     * 通过主键删除
     *
     * @param key    主键
     * @param corpid 公司id
     * @return Integer
     * @author GuoJun.HU
     * @date 2019/2/18 22:07
     * @since V1.0
     */
    Integer deleteByKey(Long key, String corpid);

    /**
     * 通过主键获取数据
     *
     * @param key    主键
     * @param corpid 公司id
     * @return ChartCategoryEntity
     * @author GuoJun.HU
     * @date 2019/2/18 22:08
     * @since V1.0
     */
    ChartCategoryEntity getByKey(Long key, String corpid);

    /**
     * Description:根据传参标记pushlink的数据为已读
     * @param param 查询参数map
     */
    void batchUpdateEnable(Map<String, Object> param);

    /**
     * 通过alias得到图表分类
     * 主要是移动端业绩目标要穿透到图表中心，而图表中心只有一个“目标完成情况”的一级分类，首页业绩目标是各个图表（其父分类id不是“目标完成情况”），因此需要获取该“目标完成情况”的分类id
     * @param corpid 公司id
     * @param alias 分类别名
     * @return com.xbongbong.pro.domain.entity.ChartCategoryEntity
     * @author zcp
     * @date 2019/5/21 11:29
     * @since v1.0
     * @version v1.0
     */
    ChartCategoryEntity getEntityByAlias(String corpid, String alias);

    /**
     * 获取图表分类list
     * @param corpid
     * @return java.util.List<com.xbongbong.pro.domain.entity.ChartCategoryEntity>
     * @author zcp
     * @date 2019/7/12 0:43
     * @since v1.0
     * @version v1.0
     */
    public List<ChartCategoryEntity> getList(String corpid);

    /**
     * 构建分类id和分类名称的对应关系map
     * @param corpid
     * @return java.util.Map<java.lang.String,java.lang.String>
     * @author zcp
     * @date 2019/7/12 0:43
     * @since v1.0
     * @version v1.0
     */
    public Map<String, String> getIdNameMap(String corpid);

    /**
     * 根据别名查询
     * @param param
     * @author xingxing.xiao
     */
    ChartCategoryEntity getEntityByAlias(Map<String, Object> param);

    /**
     * 得到重复初始化的分类alias（根据corpid、alias分组）
     * 接口：chart/category/init/categoryAndChart
     * 最终对比corpid=0分类和当前公司分类数量的方法：ChartInitHelp.chartCategoryInit
     * @param param
     * @return java.util.List<com.xbongbong.pro.domain.entity.ChartCategoryEntity>
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    List<ChartCategoryEntity> getOverInitAlias(Map<String, Object> param);

    /**
     * 物理删除
     * 直接删除这条记录
     *
     * @param corpid 公司id
     * @param idIn   id集合
     * @return 删除数据库的行
     * @author zcp
     */
    Integer physicalDelete(String corpid, Collection<Long> idIn);

    /**
     * 查询公司id集合
     * @return java.util.List<java.lang.String>
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    List<String> getCorpidList();

    @Override
    List<ChartCategoryEntity> findEntitys(Map<String ,Object>  param);
    
    /**
     * 批量更新数据
     * @param entityList
     * @param corpid
     * @return void
     */
    void updateBatch(List<ChartCategoryEntity> entityList, String corpid);

    void updateName(Long id, String name);

    /**
     * 更新发布标识
     * @param categoryId 分类ID
     * @param publish 发布标识
     * @author zhouwq
     * @date 2020/9/9 10:03
     */
    void updatePublishFlag(Long categoryId, Integer publish, String corpid);

    /**
     * 更新全局样式
     * @param chartCategoryEntity 分类实体
     * @author weiming
     * @date 2021/3/16 13：40
     */
    void updateGlobalStyle(ChartCategoryEntity chartCategoryEntity);

    /**
     * 批量更新数据
     * @param entityList
     * @param corpidList
     * @return void
     */
    void updateBatch4Script(List<ChartCategoryEntity> entityList, List<String> corpidList);
}

 
